package com.martinwj.service.impl;

import com.martinwj.constant.ErrorMsg;
import com.martinwj.dao.type.ITypeDAO;
import com.martinwj.dao.typefield.ITypeFieldDAO;
import com.martinwj.entity.Type;
import com.martinwj.exception.SysException;
import com.martinwj.service.TypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * @ClassName: TypeServiceImpl
 * @Description: TODO
 * @author: martin-wj
 * @createDate: 2020-12-23
 */
@Service
public class TypeServiceImpl implements TypeService {

    @Autowired
    private ITypeDAO iTypeDAO;
    @Autowired
    private ITypeFieldDAO iTypeFieldDAO;

    /**
     * 查询分类列表
     */
    public List<Type> list() {
        return iTypeDAO.list();
    }

    /**
     * 保存分类
     * @param typeList
     */
    public void save(List<Type> typeList) {
        for (Type type : typeList) {
            if (StringUtils.isEmpty(type.getId())) {
                // 插入
                iTypeDAO.insert(type);
            } else {
                // 更新
                iTypeDAO.update(type);
            }
        }
    }

    /**
     * 删除分类
     * @param idArr 分类主键数组
     * @throws SysException
     */
    public void delete(String[] idArr) throws SysException {
        // 1.0 校验该分类下是否已有字段配置（防止误删除）
        for (int i=0; i<idArr.length; i++) {
            int count  = iTypeFieldDAO.countByTypeId(idArr[i]);
            if (count>0) {
                throw new SysException(ErrorMsg.ERROR_800001);
            }
        }

        // 2.0 批量删除分类
        iTypeDAO.delete(idArr);
    }


    /**
     * 根据主键查询分类信息
     * @param id 主键
     * @return
     */
    public Type selectById(String id) {
        return iTypeDAO.selectById(id);
    }

}
